package org.patterns.behavior.observer;


import java.util.ArrayList;

/**
 * 战队控制中心类：目标类
 */
public abstract class AllyControlCenter {
	/**
	 * 战队名称
	 */
	protected String allyName;
	/**
	 * 定义一个集合用于存储战队成员
	 */
    protected ArrayList<Observer> players = new ArrayList<Observer>();

    /**
     * 设置战队名称
     * @param allyName 战队的名称
     */
    public void setAllyName(String allyName) {
        this.allyName = allyName;
    }

    /**
     * 获取战队名称
     * @return 返回战队的名称
     */
    public String getAllyName() {
        return this.allyName;
    }

    /**
     * 注册方法
     * 用于添加一个观察者（玩家）到战队成员集合中
     * @param obs 要添加的观察者对象
     */
    public void join(Observer obs) {
        System.out.println(obs.getName() + "加入" + this.allyName + "战队！");
        players.add(obs);
    }

    /**
     * 注销方法
     * 用于从战队成员集合中移除一个观察者（玩家）
     * @param obs 要移除的观察者对象
     */
    public void quit(Observer obs) {
        System.out.println(obs.getName() + "退出" + this.allyName + "战队！");
        players.remove(obs);
    }

    /**
     * 声明抽象通知方法
     * 此方法需要由子类实现，用于通知所有战队成员
     * @param name 发起通知的成员名称
     */
    public abstract void notifyObserver(String name);
}
